"""
## （一）回归任务预测
# 1.导入依赖包
# 2.准备数据
# 3.实例化 线性回归模型
# 4.模型训练
# 5.模型预测

x = [[80, 86], [82, 80], [85, 78], [90, 90], [86, 82], [82, 90], [78, 80], [92, 94]]
y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]
"""

# 1.导入依赖包
from sklearn.linear_model import LinearRegression
import joblib
import os

# demo
def dm01_Regression_pred():
    # 2.准备数据 平时成绩 期末成绩 最终成绩
    x = [[80, 86], [82, 80], [85, 78], [90, 90], [86, 82], [82, 90], [78, 80], [92, 94]]
    y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]
    # 3.实例化 线性回归模型
    estimator = LinearRegression()
    print('estimator-->',estimator)
    # 4.模型训练
    estimator.fit(x,y)
    # 打印模型系数（每个特征的权重）
    print('estimator.coef_-->', estimator.coef_)
    # 打印模型截距（y轴截距）
    print('estimator.intercept_-->', estimator.intercept_)
    # 5.模型预测
    mypred = estimator.predict([[90,80]])
    print('mypred-->',mypred)


def dm02_Regression_pred():
    # 2.准备数据 平时成绩 期末成绩 最终成绩
    x = [[80, 86], [82, 80], [85, 78], [90, 90], [86, 82], [82, 90], [78, 80], [92, 94]]
    y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]

    # 3.实例化 线性回归模型
    estimator = LinearRegression()
    print('estimator-->', estimator)

    # 4.模型训练
    estimator.fit(x, y)

    # 5.模型预测
    mypred = estimator.predict([[90, 80]])
    print('mypred-->', mypred)

    # 6.保存模型
    print('\n模型保存和模型重新加载')
    # 创建模型保存目录
    if not os.path.exists('./model'):
        os.makedirs('./model')
    joblib.dump(estimator, './model/mylrmodel01.bin')

    # 7.模型加载
    # 7.从磁盘加载之前保存的模型
    # joblib.load() 函数读取二进制文件并还原成原始的Python对象
    myestimator2 = joblib.load('./model/mylrmodel01.bin')
    print('myestimator2-->', myestimator2)  # 打印加载后的模型对象

    # 8.使用加载的模型进行预测
    # 预测学生平时成绩为90分、期末成绩为80分时的最终成绩
    mypred2 = myestimator2.predict([[90, 80]])
    print('mypred2-->', mypred2)  # 打印预测结果，验证与原模型预测结果是否一致



if __name__ == '__main__':
     # （一）回归任务预测
    # dm01_Regression_pred()
    # （二）模型保存和模型重新加载
    dm02_Regression_pred()
    